Mobile phone system and method for self-caddy

ABSTRACT

A mobile phone incorporates a positioning system to calculate a user&#39;s distance from a golf hole. Based on the distance, the mobile phone recommends a golf club to use.

PRIORITY CLAIM TO RELATED APPLICATION

This application claims priority of and incorporates by reference U.S. Patent Application No. 60/824,277 filed Aug. 31, 2006 entitled “GPS-Enabled Mobile Phone Application System for Golfers to Self-Caddy,” by inventor Frank Nguyen.

TECHNICAL FIELD

This invention relates generally to mobile phones, and more particularly, but not exclusively, provides a system and method to enable golfers to self-caddy using a mobile phone.

BACKGROUND

Golfing requires precision execution of every stroke play. Reading the accurate yardage of every stroke, selecting the right club for play based on one's ability and statistics are essential for a golfer. Some of these critical decisions or help come from a golfer's assistant, such as a caddie. In reality, a caddie is only available for tour professional players or at expensive golf clubs. In most cases, golfers rely on themselves.

Accordingly, a new system and method are needed that enable self-caddying.

SUMMARY

Mobile phones have become more of a Personal Digital Assistant (PDA) for the average person, performing more advanced tasks than just simply making and receiving phone calls. Among the new advanced technologies enabled for mobile phones is built-in GPS (Global Positioning System) chipset into the mobile phone. Combining this GPS capability with other available technology in the mobile device such as Internet connection via mobile wireless network, digitized global map, and the community-driven Internet website, such a mobile phone software application can be developed to help thousands of global golfers to improve their game on and off the golf course. The key is the ability to pin point the exact location of every golf ball at rest during the game play, relatively to the digitized location (longitude and latitude) of every hole of the golf course. The data then can be stored, analyzed, and utilized intelligently by the system to enable golfers to improve their game.

In an embodiment, a method comprises: determining a stroke location of a golfer using global positioning system data received by a mobile phone carried by the golfer; determining a hole location; calculating a difference between the two determined locations; determining a club to use based on the difference; and presenting the determination of club.

In an embodiment, a mobile phone comprises a global positioning system chipset; a hole engine; a distance engine; a club recommendation engine; and a club presentation engine. The global positioning system chipset determines a stroke location of a golfer. The hole engine determines a hole location. The distance engine, which is communicatively coupled to the chipset and the hole engine, calculates a difference between the two determined locations. The club recommendation engine, which is communicatively coupled to the distance engine, determines a club to use based on the difference. The club presentation engine, which is communicatively coupled to the club recommendation engine, presents the determination of club.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.

FIG. 1 is a block diagram illustrating a network system;

FIG. 2 is a flow diagram illustrating data flow of the system;

FIG. 3 is an example screenshot of a main menu of the system;

FIG. 4 is a table of client/server command mapping;

FIG. 5 is a block diagram illustrating a database of the system;

FIG. 6 is a flowchart illustrating a method of self-caddying;

FIG. 7 is a diagram illustrating a search club by name function;

FIG. 8 is a diagram illustrating a search club by geocode function;

FIG. 9 is an example screen shot of a golf club found screen;

FIG. 10 is a diagram illustrating a get club info function;

FIG. 11 is an example screenshot of a golf club info screen;

FIG. 12 is a diagram illustrating a download course function;

FIG. 13 is a diagram illustrating an example golf course download file;

FIG. 14 is an example screenshot of a golf club info screen;

FIG. 15 is an example screenshot of a play a round screen;

FIG. 16 is a flowchart illustrating a method of playing a round;

FIG. 17 is an example screenshot of a play a hole screen;

FIG. 18 is a flowchart illustrating a method of playing a hole

FIG. 19 is a diagram illustrating a get current location function;

FIG. 20 is an example screenshot of a record pin screen;

FIG. 21 is an example screenshot of a play a stroke screen

FIG. 22 is a flowchart illustrating a method of playing a stroke;

FIG. 23 is a diagram illustrating a get pin location function;

FIG. 24 is a diagram illustrating a golf distance function;

FIG. 25 is an example screenshot of a playing a stroke with distance to pin screen;

FIG. 26 is a diagram illustrating a get club function;

FIG. 27 is a diagram illustrating a get club most accurate function;

FIG. 28 is a diagram illustrating example output of the get club most accurate function;

FIG. 29 is a diagram illustrating a get club most used function;

FIG. 30 is a diagram illustrating example output of the get club most used function;

FIG. 31 is an example screenshot of a play a stroke with club recommendation screen;

FIG. 32 is an example screenshot of a play a round screen with a completed round;

FIG. 33 is an example screenshot of a play a round screen after successful upload;

FIG. 34 is a block diagram illustrating a hosting server architecture;

FIG. 35 is a block diagram illustrating a mobile phone; and

FIG. 36 is a block diagram illustrating a memory of the mobile phone.

DETAILED DESCRIPTION

The following description is provided to enable any person having ordinary skill in the art to make and use the invention, and is provided in the context of a particular application and its requirements. Various modifications to the embodiments will be readily apparent to those skilled in the art, and the principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles, features and teachings disclosed herein.

FIG. 1 is a block diagram illustrating a network system 100. Embodiments of the invention include a new system and method that leverage the global positioning system (GPS) capability in mobile phones to help golfers to perform many tasks often provided by a caddie. An embodiment of the system 100 comprises three main components:

-   -   Mobile Phone 170 which includes a friendly, graphical user         interface software application for golfers to run on their         mobile phone environment. The software enables golfer to search         for nearest golf clubs within vicinity based on current         location, assist a golfer during play to make wise decisions         based on the yardage from the ball to the center of green or         based on historical statistics, record game scores and strokes         data for future game improvement.     -   Hosting System (Server) 140: a centralized, hosting computer         system that stores all users, golf clubs, data and provide a         central intelligent interface for mobile phone application, web         site access, and internal back-end tools as well as third party         software integration.     -   Community Internet Web Site 130 where users can search for golf         course information and perform golf community activities like         sharing experience tips, rating, etc. Users can have their own         account to review their golf rounds play history, reports,         analysis, rounds play with stroke by stroke displayed on a         digital map format. Other features include online tee time         booking, online golf lesson, local golf clubs news, special         discounts, e-coupons, and other golf related-information. The         website also allows community users to digitize local golf         courses GPS locations of the pins and upload onto the hosting         system for community users to share.

Other components of the system 100 include GPS satellites 110, and towers 120. The satellites provide GPS signals to the phone 170 so that it can determine its position, which should coincide with a golf ball location 150 and therefore calculate a distance from the golf ball location 150 to a golf center of green location (hole) 160. The towers 120 provide wireless signals to the phone 170.

In an embodiment:

(1) The golf community (or others) 200 digitize golf course map and pin locations and store data into the hosting system 140 from the web site 130 via an Internet connection.

(2) Golfer downloads digitized course map and pin locations from the hosting system 140 to his/her mobile phone 170 via the wireless mobile network. This data is used by the phone 170 with GPS capability to improve golfer's game.

(3) Upon completion, golfer uploads his/her game scores, GPS location data, or new golf course data to the hosting system 140 via the wireless mobile network for future analysis, references, and other users to share.

(4) Golfer can access his/her game scores, game plan, statistics, etc. from the Internet web site 130.

(5) Golfer can send game plan, data, etc. directly to his/her mobile phone 170 via Internet/mobile wireless network.

In an embodiment, an application sits in the phone 170 and has a small footprint, client software application written for mobile phone environment. It runs within the mobile phone operating system, utilizing mobile system interfaces provided by the mobile network carriers or mobile phone manufacturers. Some sample system interfaces are memory storage, network connection, hardware interface like GPS capability, native mobile phone features, etc. The application can be distributed by users 200 downloading it from the Internet via wireless mobile network from the mobile carrier network, or pre-installed with other mobile network carrier's applications when the phone is available for commercially used. Upon successful installation, a user can run the application directly on the mobile phone 170 with screen display, interactive keypad control, and sound from the mobile phone 170 via a menu, as shown in FIG. 3.

In an embodiment, the mobile application communicates with the hosting system 140 by a set of command protocols. All requests are made by the mobile phone application. The commands are in text format. They are sent and received using TCP/IP protocol. To perform a certain task that needs the data from the hosting server 140, the mobile application sends an encoded command along with its parameters to the server using TCP/IP connection. At the hosting server 140, there is a mapping function (see FIG. 4) for each client command. For every client request, the server 140 performs the task and returns the results to the mobile client application.

In an embodiment, the following tables are internal data structures used in mobile application memory for all operations. The data structures are somewhat one-on-one mapping to database tables residing in the hosting system 140. In most cases, these data structures are populated by the data downloaded from the golf course text file from the hosting server upon user's selection on the golf club 510, golf course 540 to use (see FIG. 5).

TABLE I Golf Club 510 Object Name Description Example ID Unique ID 1245 Name Golf club name San Jose Municipal Golf Course Description Golf club description Municipal, 18 holes. Green Fees: $33-$47. Cart Fee: $25. Bob McGrath, PGA Class A Director of Golf; Dennis Tuhn, PGA Class A Pro; George Young, CGCS Supt. Non-member course. Course Designer: Robert Muir Graves. Course Record: 67 by John Ellis. Type Pubic, semi-public, private, public etc. Website Website address www.sjmuni.com Street Street City City State State Zip Zip code Country Country Phone Phone # including 1 and area code Fax Fax # Status Internal club status Pending, QA, Stating, Active, In-active, etc. Image Image URL

TABLE II Golf Course 540 Object Name Description Example ID Unique system id Name Golf course name Club ID Club id golf course belongs to Description Brief golf course description Image Golf course image URL

TABLE III Golf Round 550 5Object Name Description Example ID Unique system ID Course ID Golf course ID where hole San Jose Municipal Golf belongs to Course User ID User ID who played this round Date Date played Name Round name Total Score Status

TABLE IV Hole 560 Object Name Description Example ID Unique system ID Course ID Golf course ID where hole San Jose Municipal Golf belongs to Course Description Short hole description Name Hole name Hint Short hint from the pro on how to play this hole Latitude Latitude of the center of green (or pin) Longitude Longitude of the center of the green (or pin) Elevation Elevation of the green from the sea level Par Par of this hole Score Score of this hole T1name Tee 1 name T2len Tee 1 yardage T2name Tee 2 name T2len Tee 2 yardage T3name Tee 3 name T3len Tee 3 yardage T4name Tee 4 name T4len Tee 4 yardage T5name Tee 5 name T5len Tee 5 yardage Status status

TABLE V Stroke 570 Object Name Description Example ID Unique system ID Hole ID Hole ID that this stroke occurred at User ID User ID who made this stroke Round ID Round ID that this stroke occurred in Number Hole number Date Date stroke made Hint Future Use- Latitude Latitude of the ball position at rest prior to this stroke Longitude Longitude of the ball position at rest prior to this stroke Elevation Elevation of the ball position at rest prior to this stroke YardageMade Yardage made Yardage Yardage to shoot Club Used Golf Club used Status status

TABLE VI User 520 Object Name Description Example ID Unique system ID User Name Brief user name Password Password First First name Last Last name Email Email CPhone Cell phone HPhone Home phone WPhone Work phone Street Street number and name City City State State Zip Zipcode Country Country Status User status Member Since Member since

TABLE VII User Profile 530 Object Name Description Example ID Unique system ID User ID User ID Driver Driver driving distance 3Wood 3Wood distance 5Wood 5Wood distance 7Wood 7Wood distance 2HB 2 Hybrid yardage 3HB 3 Hybrid yardage 4HB 4 Hybrid yardage 5HB 5 Hybrid 2Iron 2 Iron yardage 3Iron 3 Iron yardage 4Iron 5Iron 6Iron 7Iron 8Iron 9Iron PW Pitching Wedge yardage SW Sand Wedge yardage AW Approach Wedge yardage LW Lob Wedge yardage LastUpdate Date last yardage update Status General status

TABLE VIII Location Object Name Description Example Latitude Latitude of the ball position at rest prior to this stroke Longitude Longitude of the ball position at rest prior to this stroke Elevation Elevation of the ball position at rest prior to this stroke

FIG. 6 is a flowchart illustrating a method 600 of self-caddying. The method 600 assumes user authentication upon application startup is completed.

Find a Golf Club (610) is a command (FIG. 7 and FIG. 8) from a main menu. The command is an intuitive, simple, real-time search for users to look up any golf course available in the host system database. Users can select different search criteria to narrow the search. They can search the golf club by name, city, zip code, or by the nearest golf courses within the given range of current mobile phone position. Upon successful search, a list of matched golf clubs is returned to the mobile phone application to display. Followings are the sample functions for each search criteria.

As a result for the Find A Golf Club (610) command, a list of matched golf clubs are returned to the mobile application from the host system as shown in example FIG. 9.

A user can view and navigate through the list of matched golf clubs. The user then selects (620) a desired golf course. The mobile phone 170 sends a GET_CLUB_INFO command (FIG. 10) to the server 140 to retrieve more details of the selected golf club information from the database as follows:

Upon receiving the club record, the mobile phone 170 displays the club information such as general description, address, contact phone numbers, type (public, private, etc.), weekend/weekday rates, course description, course par, tees (men/women), slope ratings, user rating, special promotion, ads, etc. as in example FIG. 11.

After viewing the golf club course details, if users decide to play a golf round leveraging the phone 170 to assist in playing, then they can select command Download Golf Club/course (FIG. 12) to download golf course details files from the host system 140 via the Internet to the mobile phone 170.

A golf course details file (see FIG. 13) contains golf club, golf course(s) and holes information data in a proprietary, pre-defined format, being mapped directly correlated with database tables fields. Pipe (|) and new line are used as delimiters. Upon receiving the file, the mobile phone 170 parses and maps data into its internal data structures (see FIG. 5 and Tables I-VIII) accordingly for fast operations.

Due to the nature of mobile phone usage where user can close and open a clam shell any time during the play, it's important to have the downloaded file and any other critical data in application memory stored instantly on a persistent local storage. In this case, the mobile local data storage is a simple text file. In an embodiment, the screen sample after a successful download may resemble FIG. 14.

Upon successful download, a user can select Play A Round menu item 1610 (FIG. 16) to start playing a golf round. A Round record is created and assigned a sequential id as a name. (See FIG. 5—Database and internal application data structures and tables.) The golf round record is associated with a user, a golf course, and all its holes. Later, when a round is completed, it will associate with all the golf strokes performed during that round. The accumulative golf strokes, which is called score is also calculated and recorded. From this screen, a user can have a complete view of a play on a certain day. Each user can save more than one round. A sample screen display is shown in FIG. 15.

New Round command (1620) saves current round and starts a new round. Upload command (1640) uploads user's round of golf data to the hosting system for future use in golf club recommendation and records tracking, as will be discussed further below. After a round is created, user is ready to start playing a round.

A user can select the menu item Play A Hole 1650 from the Play A Round screen (FIG. 15) to start playing a golf hole. The menu starts with the first hole as the default if there is no completed hole prior to that. The screen starts with the current hole and stroke in progress otherwise. A user can navigate using mobile phone keypad to the next and previous hole. There are either 9 holes or 18 holes round. The number of holes is provided from the course download. For every hole, its information such as general description, pins' yardages, image, if any, local rules, play mode; View only or Play mode from the Setting menu, accumulative strokes and score, are displayed.

Record Pin command (1820): This command is available only if the golf course is being created by the user in the case that the golf course file does not exit in the hosting system (see Create a Golf Course, FIG. 3—Main Menu). User can position him/herself at the center of the green of the hole and run this command to record the GPS coordinates of the center of the green for later upload to the hosting system.

The pin (or center of green) coordinates are saved to the mobile application internal data structures as well as the persistent text file on the device. The Record Pin screen (FIG. 20) shows the Pin location in the following sample screen:

Recommend command (1830) to display a hint text (and/or image), usually provided by the local club professional on the strategy and how to play on this hole. Data is available during the course download (see Internal Data Structure, Hole table, and Download Course).

When a round is completed, either 9 or 18 holes, a user can choose Complete Round command (1850) to view the completed round information and prepare to upload the data to the hosting system.

To start playing stroke and record its data, a user can select the Play A Stroke command (1840). The function Play A Stroke (1840) is to assist user to manage every stroke play of any given hole. Upon being selected, the Play A Stroke screen (FIG. 21) creates and starts with the first stroke as the default if there is no completed stroke prior to that. If not, the screen starts with the current hole and stroke in progress, otherwise. In addition to the brief golf course, hole information, the screen now displays the stroke information as well that include stroke number, distance to the pin (center of the green), or golf club recommendation.

For New Stroke command (2250; FIG. 22), a new Stroke record is created (see Stroke table in FIG. 5—Database and internal application data structures and tables.). The application also updates the previous stroke record. It prompts user to enter the club type used for the previous stroke. It also calculates the yardage needed (Yardage field) and yardage made (YardageMade field) based on the current golf ball position for future Stroke Recommendation function.

To determine stroke position (670) a Distance to Pin (2220) command from the Play A Stroke screen is used. It is to assist user to determine the distance in yards from the current location of the ball to the pin using built-in GPS capability in the mobile phone 170 at any given hole. When user selects the Distance to Pin command, given that the current hole number is known, the mobile phone 170 calls function Get_Pin_Location(Current_Hole_Number) to get the Location structure. See FIG. 23.

Afterwards, a Get_Distance(Get_Pin_Location(Current_Hole_Number)) (FIG. 24) returns the distance of the current position where the golfer, the mobile phone 170, and the ball lies at rest are to the pin (or center of the green).

Then Display_GPS_Info( ) displays the ball position to the pin on the LCD as in the sample screen as shown in FIG. 25.

To recommend a stroke (680), a user selects a Recommendation command from the Play A Stroke screen (FIG. 25). It is to assist user to determine what golf club should be used, based on the distance in yards from the current location of the ball and the recommendation methodology or mode user prefers to use. There are three recommendation modes for the shot:

Profile: recommending a golf club based on the current distance and the preset user's profile on clubs distances. For example, if the distance is 110 yard and user's iron 9 club preset distance in the My Profile is 115 yards, then iron 9 club is recommended.

Most Accurate: recommending a golf club based on user's history of plays and statistics. For a given distance, it suggests the club used in the past that the result distance of a required yardage and yardage made is minimal. This rule is applied for all user's past strokes that have distance within +15 yards from a given distance.

For Example: For a shot that needs a distance of 135 yards; the system will pull up all stroke plays of that user in the database that has the Distance field +15 yards from 135 yards. (See Stroke table in FIG. 5—Database and internal application data structures and tables.) Among these strokes, the one that has Delta Yardage −5 yards is the closest one. Therefore, the iron club 8 is recommended. See FIG. 28—Example of Get Club Most Accurate Function below.

Most Frequently Used: recommending a golf club based on user's history of plays and statistics. For a given distance, it suggests the club mostly used in the past that the result distances are within +/−10 yards of a given distance.

For Example: For a shot that needs a distance of 135 yards; the system will pull up all stroke plays of that user in the database that has the YardMade field +/−10 yards from 135 yards. (See Stroke table in FIG. 5—Database and internal application data structures and tables.) Among these strokes, club iron 9 has been used to the most. Therefore, the iron club 9 is recommended. See FIG. 30.

By calling Display_Suggestion_Info( ) to display the golf club recommendation, the screen sample looks like FIG. 31.

After finishing the last stroke of the hole, user can select a Complete Hole (FIG. 31) to go back to the Play A Hole menu to start the next hole until completing a round.

When a round of golf is completed, user has the option to upload the round play (690) to the hosting system for future statistics and game improvement. A sample screen of completed round is shown in FIG. 32.

If the round played is the new golf course created by the user, it can be uploaded into the hosting system for others to share with the mobile phone application as well. Upon successful upload a round to the hosting system the sample screen looks like that shown in FIG. 33.

Finally, user can press Complete A Round (FIG. 33) to go back to the mobile phone 170 application Main Menu for any other use.

The hosting server system 140 is a central hosting system that houses the database 3460 and all the intelligent business logic 3440 to serve mobile phone application 3410, web site 3420, and all internal back-end tools 3430. The database 3460 stores all users, golf club, golf courses, holes, rounds, shots, billing plan, promotion, ads, actions, and others. The intelligent business logic 3440 performs all server tasks like user authentication, service rendered to clients based on subscription plan, sophisticated and heavy computing like shots statistics, golf course search, and many others. Result is sent to the client side via a proprietary client/server protocol via the Internet. In another embodiment, the database 3460 is stored in the mobile phone 170 so that a user does not need to access a network to perform the above-mentioned methods.

The website 3420 is another system portal for users to interface with the system. From the website, users can do several functions, such as golf course search; golf course creation; and participate in a golf forum.

The golf course search is similar to the mobile phone application feature. The website provides an intuitive, simple, real-time search capability for users to look up any golf course available in the host system. The system provides many search criteria that can be used singly or combined with others to narrow the search. User can search:

-   -   a. By Name: golf courses that match a given name. Wild card         characters are acceptable.     -   b. By Zip Code: golf courses that match a zip code.     -   c. By City: golf courses that match a city name

If a golf course is not available from the system, a user can use a web-based tool to create a golf course data it in the hosting system database for mobile phone application to use. The golf club, golf course(s), and hole tables from the FIG. 5—Database and internal application data structures and tables are populated by the web-based tool.

Method 1:

-   -   Use Google Map to find the golf course satellite map by entering         the address.     -   Locate every green from the map.     -   Enter the center of the green locations; i.e. longitude and         latitude provided by Google Map into the tool entry fields         accordingly.     -   Save the data.

Method 2:

-   -   In the case that Hosting system administrator does not know the         hole from the satellite map, he/she posts the map with holes'         labels to the website community and asks for local golfers to         help identify the hole's number with the label.     -   User identify the holes' numbers and reply accordingly with the         labels for the hosting system admin can record the greens' GPS         locations as above.

The golf forum is a public forum for golfers to post any golf-related discussions, blogs, images, experiences, thoughts, etc. One of the most important features of the forum is allow users to rate a golf course for references based on certain criteria. The golf course rating can be used later by the system to mobile phone application.

FIG. 35 is a block diagram illustrating a wireless phone 170 (FIG. 1) capable of hosting the functions described above. The phone 170 includes a wireless transceiver 3510 capable to wirelessly communicate with wireless networks via cell sites, such as cell tower 120; a memory device 3560, such as such as a magnetic disk, Random Access Memory (RAM), Flash Memory or other memory device or combination thereof a processor 3550, such as an ARM 7 microprocessor or a Motorola 68000 microprocessor; a GPS receiver 3540; a display 3580; and an input device 3590, all interconnected for communication by a system bus 3570. In addition, wireless transceiver 3510 is communicatively coupled to antenna 3500.

The GPS receiver 3540 receives radio signals from GPS satellites orbiting the Earth. Based on the received signals, the receiver 3540 can calculate its position and altitude. The GPS receiver 3540 can then forward that data to processor 3550 for processing. The term GPS refers to any generic global positioning system and not just satellite based. For example, the GPS receiver 3540 can use a Loran-C, GLONASS, Galileo, triangulation between cell phone towers or other location determination system.

The transceiver 210 can wirelessly transmit and receive data, including text messages, such as SMS messages or other data formats, and voice, via wireless networks, such as Cellular Digital Packet Data (CDPD) and ARDIS. The transceiver 3510 comprises a transmitter 3520 for transmitting data and a receiver 3530 for receiving data.

The processor 3550 executes engines stored in memory 3560 to transmit and receive SMS text messages (or data in other formats) and to run the golf functions discussed above. The display 3580 comprises a LCD display or other device for displaying data. The input 3590 includes a keyboard and/or other input device.

FIG. 36 is a block diagram illustrating a memory 3560 of the mobile phone. The memory 3560 includes a hole engine 3610; a distance engine 3620; a club recommendation engine 3630; a club presentation engine 3640; a golf course engine 3650; a storage engine 3660; and a map engine 3670. While the engines 3610-3670 are shown in a software embodiment, they can also be implemented with other technology, such as Application Specific Integrated Circuits.

The hole engine 3610 determines a hole location (e.g., pin) The hole engine 3610 may use the function Get_Pin_Location to get the pin location from a database stored in the memory 3560 and/or stored at another site. The distance engine 3620 calculates a difference between the hole and current golfer position using the Get_Distance function. The club recommendation engine 3630 determines a club to use based on the difference. Functions used by the engine 3630 may include the Get_Club_Profile (Distance) function, the Get_Club_Most_Accurate function and the Get_Club_Most_Used function. The club presentation engine 3640 presents the determination of club on a screen.

The golf course engine 3650 receives golf course data including hole locations, either from a local database or from a database stored at another site. The storage engine 3660 stores round play data locally and/or at another site. The map engine 3670 shows stored data in a map format. That is, the map engine 3670 displays a map of the golf course (or section thereof) and round(s) played so that a user can improve his/her golf game by reviewing the strokes. In an embodiment, the map engine 3670 displays the map and data on the mobile phone 170. In another embodiment, the map engine 3670 is resident on the server 140, which displays the map either on the mobile phone 170 (when downloaded) or on a user's computer when a website is accessed.

The foregoing description of the illustrated embodiments of the present invention is by way of example only, and other variations and modifications of the above-described embodiments and methods are possible in light of the foregoing teaching. Further, components of this invention may be implemented using a programmed general purpose digital computer, using application specific integrated circuits, or using a network of interconnected conventional components and circuits. Connections may be wired, wireless, modem, etc. The embodiments described herein are not intended to be exhaustive or limiting. The present invention is limited only by the following claims. 

1. A method, comprising: determining a stroke location of a golfer using global positioning system data received by a mobile phone carried by the golfer; determining a hole location; calculating a difference between the two determined locations; determining a club to use based on the difference; and presenting the determination of club.
 2. The method of claim 1, wherein the determining the hole location comprises: receiving golf course data including hole locations; and selecting a hole location, by a user's selection or by automatic hole detection algorithm, to the determined stroke location.
 3. The method of claim 2, wherein the receiving golf course data comprises: transmitting a request from a mobile phone to a server; and receiving the golf course data from the server.
 4. The method of claim 1, wherein the determining the stroke location comprises: determining a location of a mobile phone carried by the golfer.
 5. The method of claim 1, further comprising storing round play data.
 6. The method of claim 5, wherein the determining the club comprises: looking up clubs and associated average range for the golfer from stored round play data; and selecting the club having an average range closest to the calculated difference.
 7. The method of claim 5, wherein the determining the club comprises: looking up clubs and associated distance to hole when used based on stored round play data; and selecting the club having the associated distance to hole closest to the calculated difference.
 8. The method of claim 5, further comprising displaying round play data overlaid on a map.
 9. The method of claim 1, wherein the determining the club comprises: looking up clubs and associated preset distances; and selecting the club having the associated preset distance closest to the calculated difference.
 10. A system, comprising: means for determining a stroke location of a golfer using global positioning system data received by a mobile phone carried by the golfer; means for determining a hole location; means for calculating a difference between the two determined locations; means for determining a club to use based on the difference; and means for presenting the determination of club.
 11. A computer-readable medium having stored thereon a program that causes a computer to execute a method, the method comprising: determining a stroke location of a golfer using global positioning system data received by a mobile phone carried by the golfer; determining a hole location; calculating a difference between the two determined locations; determining a club to use based on the difference; and presenting the determination of club.
 12. A mobile phone, comprising: a global positioning system chipset for determining a stroke location of a golfer; a hole engine for determining a hole location; a distance engine, communicatively coupled to the chipset and the hole engine, for calculating a difference between the two determined locations; a club recommendation engine, communicatively coupled to the distance engine, for determining a club to use based on the difference; and a club presentation engine, communicatively coupled to the club recommendation engine, for presenting the determination of club.
 13. The system of claim 12, further comprising a golf course engine for receiving golf course data including hole locations; and wherein the hole engine selects a hole location, by a user's selection or by an automatic hole detection algorithm, to the determined stroke location.
 14. The system of claim 13, wherein the golf course engine transmits a request from a mobile phone to a server; and receives the golf course data from the server.
 15. The system of claim 12, wherein the GPS chipset determines the stroke location by determining the location of the mobile phone, which is carried by the golfer.
 16. The system of claim 12, further comprising a storage engine for storing round play data.
 17. The system of claim 16, wherein the club recommendation engine determines the club by looking up clubs and associated average range for the golfer from stored round play data; and selecting the club having an average range closest to the calculated difference.
 18. The system of claim 16, wherein the club recommendation engine determine the club by looking up clubs and associated distance to hole when used based on stored round play data; and selecting the club having the associated distance to hole closest to the calculated difference.
 19. The system of claim 16, further comprising a map engine for displaying round play data overlaid on a map.
 20. The system of claim 12, wherein the club recommendation engine determines the club by looking up clubs and associated preset distances; and selecting the club having the associated preset distance closest to the calculated difference.
 21. A method, comprising: using a global positioning system chipset in a mobile phone to determine a golf course hole location; and transmitting the golf course hole location to a database for storage so that other users can access the golf course hole location. 